home *** CD-ROM | disk | FTP | other *** search
- /*
- * bonobo-storage.idl: Handles structured storage
- *
- * Copyright (C) 1999, 2000 Helix Code, Inc.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- * Dietmar Maurer (dietmar@maurer-it.com)
- *
- * Terms:
- *
- * Storage: This interface provides access to a directory
- * like storage facility.
- *
- * Stream: Used to read and write bytes to a storage. The
- * Streams are equivalent to files.
- */
-
- #ifndef BONOBO_STORAGE_IDL
- #define BONOBO_STORAGE_IDL
-
- #include "Bonobo_Unknown.idl"
-
- module Bonobo {
-
- typedef long StorageInfoFields;
- const StorageInfoFields FIELD_CONTENT_TYPE = 1;
- const StorageInfoFields FIELD_SIZE = 2;
- const StorageInfoFields FIELD_TYPE = 4;
-
- typedef string ContentType;
-
- enum StorageType {
- STORAGE_TYPE_REGULAR,
- STORAGE_TYPE_DIRECTORY
- };
-
- struct StorageInfo {
- string name;
- StorageType type;
- ContentType content_type;
- long size;
- };
-
- interface Stream : Unknown {
- typedef sequence<octet> iobuf;
-
- exception NoPermission {};
- exception NotSupported {};
- exception IOError {};
-
- enum SeekType {
- SeekSet,
- SeekCur,
- SeekEnd
- };
-
- /**
- * getInfo:
- * @mask:
- *
- * Returns a StorageInfo structure which contains
- * the name, content_type and size info.
- */
- StorageInfo getInfo (in StorageInfoFields mask)
- raises (IOError, NoPermission, NotSupported);
-
- /**
- * setInfo:
- * @info:
- * @mask:
- *
- */
- void setInfo (in StorageInfo info, in StorageInfoFields mask)
- raises (IOError, NoPermission, NotSupported);
-
- /**
- * read:
- * @count: number of bytes to read.
- * @buffer: the buffer where the data is returned.
- */
- void read (in long count, out iobuf buffer)
- raises (NoPermission, IOError);
-
- /**
- * write:
- * @buffer: a buffer to write.
- *
- * writes the buffer to this stream.
- */
- void write (in iobuf buffer)
- raises (NoPermission, IOError);
-
- /**
- * seek:
- * @offset: offset
- * @whence:
- *
- * Sets the read/write pointer to @offset (relative to @whence)
- */
- long seek (in long offset, in SeekType whence)
- raises (IOError, NotSupported);
-
-
- /**
- * truncate:
- * @length: new size of the stream
- *
- */
- void truncate (in long length)
- raises (IOError, NoPermission, NotSupported);
-
- /**
- * commit:
- *
- * Commits any pending changes to the Storage
- */
- void commit ()
- raises (IOError, NoPermission, NotSupported);
-
- /**
- * revert:
- *
- * Discards any changes since the last commit.
- */
- void revert ()
- raises (IOError, NoPermission, NotSupported);
-
- void unImplemented1 ();
- void unImplemented2 ();
- };
-
- interface Storage : Unknown {
-
- typedef sequence<StorageInfo> DirectoryList;
-
- typedef long OpenMode;
- const OpenMode READ = 1;
- const OpenMode WRITE = 2;
- const OpenMode CREATE = 4;
- const OpenMode FAILIFEXIST = 8;
- const OpenMode COMPRESSED = 16;
- const OpenMode TRANSACTED = 32;
-
- exception IOError {};
- exception NameExists {};
- exception NotFound {};
- exception NoPermission {};
- exception NotSupported {};
- exception NotStream {};
- exception NotStorage {};
- exception NotEmpty {};
-
- /**
- * getInfo:
- * @path:
- * @mask:
- *
- * Returns a StorageInfo structure which contains
- * the name, content_type and size info.
- */
- StorageInfo getInfo (in string path,
- in StorageInfoFields mask)
- raises (IOError, NoPermission, NotFound, NotSupported);
-
- /**
- * setInfo:
- * @path:
- * @info:
- * @mask:
- *
- */
- void setInfo (in string path, in StorageInfo info,
- in StorageInfoFields mask)
- raises (IOError, NoPermission, NotFound, NotSupported);
-
- /**
- * openStream:
- * @path: path of the stream to open
- * @mode: open flags
- *
- * Opens a Stream whose name is @path.
- */
- Stream openStream (in string path, in OpenMode mode)
- raises (IOError, NotFound, NoPermission,
- NotStream, NameExists);
-
- /**
- * openStorage:
- * @path: path of the storage to open.
- * @mode: open mode.
- *
- * Returns a storage object for @path.
- */
- Storage openStorage (in string path, in OpenMode mode)
- raises (IOError, NotFound, NoPermission,
- NotStorage, NameExists);
-
- /**
- * copyTo:
- * @target: where to copy this storage to.
- *
- * Copies this storages contents to the @target storage
- */
- void copyTo (in Storage target)
- raises (IOError, NoPermission);
-
- /**
- * listContents:
- * @path: path that we want to examine.
- * @mask:
- *
- * Returns a list of all the Storage and Streams available
- * at @path.
- */
- DirectoryList listContents (in string path,
- in StorageInfoFields mask)
- raises (IOError, NotStorage, NotFound, NotSupported);
-
- /**
- * erase:
- * @path: path to the element to erase.
- *
- * Destroys the element pointed to by @path. The element
- * can be a Storage or a Stream.
- */
- void erase (in string path)
- raises (IOError, NoPermission, NotFound, NotEmpty);
-
- /**
- * rename:
- * @path_name: element name to rename
- * @new_path_name: new name we want to use
- *
- * Renames a Stream or Storage component inside a Storage.
- */
- void rename (in string path_name, in string new_path_name)
- raises (IOError, NameExists, NotFound, NoPermission);
-
- /**
- * commit:
- *
- * Commits any pending changes to the Storage since it was
- * opened. This operation is syncronous.
- */
-
- void commit ()
- raises (IOError, NoPermission, NotSupported);
-
- /**
- * revert:
- *
- * Discards any changes since the last commit.
- */
- void revert ()
- raises (IOError, NoPermission, NotSupported);
-
- void unImplemented1 ();
- void unImplemented2 ();
- };
- };
-
- #endif /* BONOBO_STORAGE_IDL */
-